<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- <script>
        // 1. 全局生成一个GO对象， Global Object
        // 没有提升形参和形参实参值相统一
        console.log(a);
        var a = 123;
        console.log(a); // 往GO里面拿
        function a() {}
        console.log(window.a);

        // GO = {
        //     a: function a() {} // 初始是undefined
        // }  
        // GO === window

    </script> -->


    <!-- <script>

        // GO = {
        //     b:
        // }

        function test() {
            var a = b = 123;
            console.log(window.a);  //可以在函数里面指定访问window
            console.log(window.b);
        }

        test();
        // AO = {
        //     a :          // AO里面没有b
        // }

    </script> -->
<!-- 
<script>    
    // 先生成GO

    // GO = {
    //     test: function test(test) {}
    // }

    console.log(test);
    function test(test) {
        console.log(test);// 先看AO，没有在往GO找
        var test = 234;
        console.log(test);
        function test(){}
    }
    test(1);
    var test = 123;
    console.log(test);
    // AO = {
    //     test: function test(){}
    // }

</script> -->

<!-- <script>

    global = 100;
    function fn() {
        console.log(global);
        global = 200;
        console.log(global);
        var global = 300;
    }
    fn();
    console.log(global);
   var global;

</script> -->


<!-- <script>

    // GO = {
    //     a: undefined,
    //     c: 234
    // }

    function test() {
        console.log(b);
        if(a) {
            var b = 100;  // 不管if执不执行，变量 声明都提升
        }
        console.log(b);
        c = 234;
        console.log(c);
    }
    var a;
    test();
    // AO = {
    //     b: 
    // }
    a = 10;
    console.log(c);

</script> -->






<script>
    function bar() {
        return foo;
        foo = 10;
        function foo(){}
        var foo = 11;
    }
    console.log(bar());

    // console.log(bar());
    // function bar(){
    //     foo = 10;
    //     function foo(){}
    //     var foo = 11;
    //     return foo;
    // }



</script>
</body>
</html>